import Vue from 'vue'
import {
  Message
} from 'element-ui'

/**
 * 取数据
 * @param key
 * @param level 级别：session-会话(默认) local-本地
 * @returns {any}
 */
export function get(key, level) {
  return JSON.parse(getStorege(level).getItem(key))
}

/**
 * 设置数据
 * @param key
 * @param value
 * @param level 级别：session-会话(默认) local-本地
 */
export function set(key, value, level) {
  getStorege(level).setItem(key, JSON.stringify(value))
}

/**
 * 移除数据
 * @param key
 * @param level 级别：session-会话(默认) local-本地
 */
export function remove(key, level) {
  getStorege(level).removeItem(key)
}

/**
 * 清除全部数据
 * @param level 级别：session-会话(默认) local-本地
 */
export function clear(level) {
  getStorege(level).clear()
}


/**
 * 检查用户信息
 */
export function checkUserInfo() {
  if (!hasUserInfo()) {
    Message.error('Not logged in, about to jump to the login page')
    setTimeout(() => {
      Vue.prototype.$util.toLogin()
    }, 2000)
  }
}

/**
 * 获取用户信息
 */
export function getUserInfo() {
  const user = get('user')
  if (user) {
    return user
  }
  return null
}

/**
 * 是否存在用户信息
 */
export function hasUserInfo() {
  const user = getUserInfo()
  return user !== null
}

/**
 * 设置用户数据
 * @param value
 */
export function setUserInfo(value) {
  set('user', value)
}

/**
 * 删除用户信息数据
 */
export function removeUserInfo() {
  remove('user')
}

/**
 * 获取当前语言
 * cn, en, ru
 */
export function getLang() {
  return get('lang', 'local')
}

/**
 * 设置当前语言
 * @param value
 */
export function setLang(value) {
  set('lang', value, 'local')
}

/**
 * 获取系统配置value
 */
export function getConfigValue(key) {
  const list = get('xt')
  const item = (list || []).find(item => item.key === key)
  return item ? item.value : null
}


/**
 * 获取货币
 */
export function getCurrency() {
  return getConfigValue('currency')
}

/**
 * 设置国家信息
 */
export function setCountry(val) {
  return set('country', val, 'local')
}

/**
 * 获取国家信息
 */
export function getCountry() {
  return get('country', 'local')
}


/**
 * 校验权限
 * @param id
 */
export function auth(id) {
  const menuList = Vue.prototype.$cache.get('menuList')
  const allMenuList = menuList || []
  if (!allMenuList || allMenuList.length == 0) {
    return false
  }
  const result = recursiveSearch(allMenuList, id)
  return result
}

/**
 * 递归查找
 * @param list
 * @param id
 * @returns {null}
 */
function recursiveSearch(list, id) {
  let result = false;
  (list || []).forEach(item => {
    if (item.id === id) {
      result = true
    } else {
      if (item.childMenu) {
        if (recursiveSearch(item.childMenu, id)) {
          result = true
        }
      }
    }
  })
  return result
}


/**
 * 获取storage
 * @param level
 * @returns {Storage}
 */
function getStorege(level) {
  let storage
  if (level && level == 'local') {
    storage = window.localStorage
  } else {
    storage = window.sessionStorage
  }
  return storage
}

/**
 * 设置页码
 */
export function setPageNumber(val) {
  return set('pageNumber', val, 'local')
}

/**
 * 获取页码
 */
 export function getPageNumber() {
  return get('pageNumber', 'local')
}